﻿using UnityEngine;
using System;
using System.Collections;


public class UserData
{
	static UserData data;
	static public void Create() { if (data == null) { data = new UserData(); } }
    static public UserData Instance
    {
		get { if (data == null) { Create(); } return data; }
        set { data = value; }
	}

	// 메인씬에서 에니메이션을 처음 한번만 보여주기 위해서 필요한 값
	public bool isFirstTimeMainScene = true;

	// 현재 선택된 레이드 보스 관련
	public int raidBossId = 0;
	public RaidBoss raidBossModel = null;

	#region - GStar Version
	// 보스 존재 여부 (보스 리스트씬 경유시 설정됨)
	public bool isExistRaidBoss = false;
	#endregion

	//사운드 관련 세팅값 저장
	public bool m_EF_Sound_On_Off = true;
	public bool m_BG_Sound_On_Off = true;

    public Language m_Language
    {
        //get { return language; }
        set
        {
            //language = value;
            Localization.language = value.ToString();
            if (SceneController.SC != null) //씬에 로컬라이즈 바뀐것 통지
                SceneController.SC.LocalizeChange();
        }
    }
    //Language language = Language.text_ko;

	// 전투 관련 (빠른 PVP 여부)
	public bool isQuickPVPBattle = false;
	public UserModel quickPVPUserModel = null;

	// 전투 관련 (전투 친구 ID)
	public long battleFriendId = 0;
	public FriendModel battleFriend = null;
	public UserModel battleFriendUserModel = null;
	public bool battleFriendIsMyFriend = false;

	// 반격 여부
	public long counterAttackMsgId = 0;

	//봉혼석 사용 여부
	public bool m_IsUseSoulStone = false;

	public ResearchResultModel researchResultData;
	public ExpansionWarResultModel expansionWarResultData;
	public RaidBossStartModel raidBossStartData;
	public RaidBossEndModel raidBossResultData;
	public PvpEndResult quickPvPResultData;

    public int NorewardGetAchieveCount = 0;
	
	public double serverTimeOffset = 0;
	public System.TimeSpan serverTimeOffsetSpan;

	//전투 랜덤 시드 값
	public int battleRandomSeed = 100;
	//확장전 적 웨이브 정보
	public int[] extendWarWave1;
	public int[] extendWarWave2;
	public int[] extendWarWave3;

	//조사 적 웨이브 정보
	public int [][] investigateNpcNo; 


	//필살기 게이지 값 
	public float rageValue;

	public int userLevel = 0;
	public bool isShowLevelUp = false;

	// 친구 추가 제한
	public DateTime friendDayLimitCheckTime = DateTime.Now;
	public short friendDayLimitCheckCount = 0;

	// 기본 친구 목록 수
	public int defaultFriendCount
	{
		get { if (PlayerPrefs.GetInt("DefaultFriendCount") == null) { PlayerPrefs.SetInt("DefaultFriendCount", 0); } return PlayerPrefs.GetInt("DefaultFriendCount"); }
		set { PlayerPrefs.SetInt("DefaultFriendCount", value); }
	}
	
	// 요청 친구 목록 수
	public int requestFriendCount
	{
		get { if (PlayerPrefs.GetInt("RequestFriendCount") == null) { PlayerPrefs.SetInt("RequestFriendCount", 0); } return PlayerPrefs.GetInt("RequestFriendCount"); }
		set { PlayerPrefs.SetInt("RequestFriendCount", value); }
	}
	
	// 메일 갯수
	public int mailCount
	{
		get { return ( PlayerPrefs.GetInt("MailCount") == null ? 0 : PlayerPrefs.GetInt("MailCount") ); }
		set { PlayerPrefs.SetInt("MailCount", value); }
	}
    
    //(지스타 임시) 메인씬에서 새로운 보스 오픈 여부를 보여주기위한 Flag.
    public bool isOpenNewBossAreaForGStar = false;

	// UserModel : 로그인 했을 때 받아오는 정보
	UserModel m_UserModel;
	public UserModel userModel
	{
		get { return m_UserModel; }
		set
		{
			m_UserModel = value;

			if (userLevel == 0)
				userLevel = value.level;

			if (userLevel < value.level)
			{
				userLevel = value.level;
				isShowLevelUp = true;
			}

			if (SceneController.m_TopLeftMenu != null)
			{
				SceneController.m_TopLeftMenu.GetComponent<Panel_TopLeft>().needUpdate = true;
			}
		}
	}

	public void RefreshUserModel()
	{
		NetworkManager.Instance.C2S_LEGION_GET((responseData) => { m_UserModel = responseData.data; });
	}
}